<?php
/**
 * 表单控制工具类
 *
 * Class Form
 */
class Form {

	/**
	 * 显示文本
	 *
	 * @author KING
	 * @date 2020年7月30日
	 *
	 * @param string $value	显示内容
	 * @param bool $input	是否显示input控件
	 * @return string
	 */
	public static function showText($value, $input=false) {
		if ($input) {
			$value = '<input type="text" class="layui-input" value="'.$value.'" autocomplete="off" readonly>';
		} else {
			$value = '<span style="line-height:38px;">'.$value.'</span>';
		}
		return $value;
	}

	/**
	 * 单行文本输入框
	 *
	 * @author KING
	 * @date 2020年6月10日
	 *
	 * @param string $name			控件name
	 * @param string $value			控件value
	 * @param string $placeholder	控件提示信息
	 * @param string $class			控件类名
	 * @param string $attr			控件其它属性
	 * @return string
	 */
    public static function input($name, $value='', $placeholder='', $class='', $attr=''){
    	return '<input type="text" class="'.($class).' layui-input field-'.$name.'" name="'.$name.'" value="'.$value.'" autocomplete="off" placeholder="'.$placeholder.'" '.$attr.'>';
    }

    /**
     * 隐藏文本框
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string $id			控件id
     * @return string
     */
    public static function hidden($name, $value='', $id=''){
    	return '<input type="hidden" name="'.$name.'" class="field-'.$name.'" id="'.$id.'" value="'.$value.'">';
    }

    /**
     * 多行文本输入框
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
	 * @param string $value			控件value
	 * @param string $id			控件id
	 * @param string $placeholder	控件提示信息
	 * @param string $class			控件类名
	 * @param string $attr			控件其它属性
	 * @return string
     */
    public static function textarea($name, $value='', $id='', $placeholder='', $class='', $attr=''){
    	return '<textarea class="'.($class?:'layui-textarea').' field-'.$name.'" name="'.$name.'" id="'.$id.'" autocomplete="off" placeholder="'.$placeholder.'" '.$attr.'>'.$value.'</textarea>';
    }

    /**
     * 开关切换
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value（1或0）
     * @param string $text			控件显示文本（如：开启|关闭）
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function switch($name, $value='', $text='', $attr=''){
    	return '<input type="checkbox" name="'.$name.'" value="1" lay-skin="switch" lay-text="'.$text.'" '.($value==1?'checked':'').' '.$attr.'>';
    }

    /**
     * 下拉框
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param array $options		控件选项
     * @param string $id			控件id
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function select($name, $value='', $options=[], $id='', $class='', $attr=''){
    	$html = '<select name="'.$name.'" class="'.$class.' field-'.$name.'" id="'.$id.'" '.$attr.'>';
		foreach ($options as $k => $v) {
			$html .= '<option value="'.$k.'" '.($value===$k?'selected':'').'>'.$v.'</option>';
		}
    	$html .= '</select>';
    	return $html;
    }

    /**
     * 单选
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param array $options		控件选项
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function radio($name, $value='', $options=[], $class='', $attr=''){
    	$html = '';
    	foreach ($options as $k => $v) {
    		$html .= '<input type="radio" name="'.$name.'" value="'.$k.'" class="'.$class.' field-'.$name.'" '.$attr.' title="'.$v.'" '.($value==$k?'checked':'').'>';
    	}
    	$html .= '';
    	return $html;
    }

    /**
     * 多选
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param array $checked		已选中项
     * @param array $options		控件选项
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function checkbox($name, $checked=[], $options=[], $class='', $attr=''){
    	$html = '';
    	foreach ($options as $k => $v) {
    		$html .= '<input type="checkbox" name="'.$name.'[]" value="'.$k.'" class="'.$class.' field-'.$name.'" '.$attr.' title="'.$v.'" '.(is_array($checked)&&in_array($k, $checked)?'checked':'').'>';
    	}
    	$html .= '';
    	return $html;
    }

    /**
     * 日期
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string id				控件id
     * @param string $placeholder	控件提示信息
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function date($name, $value='', $id='', $placeholder='', $class='', $attr=''){
    	return '<input type="text" name="'.$name.'" value="'.$value.'" class="'.($class?:'layui-input').' layui-date field-'.$name.'" id="'.$id.'" laydate-type="date" autocomplete="off" placeholder="'.$placeholder.'" '.$attr.'>';
    }

    /**
     * 时间
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string id				控件id
     * @param string $placeholder	控件提示信息
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function time($name, $value='', $id='', $placeholder='', $class='', $attr=''){
    	return '<input type="text" name="'.$name.'" value="'.$value.'" class="'.($class?:'layui-input').' layui-date field-'.$name.'" id="'.$id.'" laydate-type="time" autocomplete="off" placeholder="'.$placeholder.'" '.$attr.'>';
    }

    /**
     * 日期+时间
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string id				控件id
     * @param string $placeholder	控件提示信息
     * @param string $class			控件类名
     * @param string $attr			控件其它属性
     * @return string
     */
    public static function datetime($name, $value='', $id='', $placeholder='', $class='', $attr=''){
    	return '<input type="text" name="'.$name.'" value="'.$value.'" class="'.($class?:'layui-input').' layui-date field-'.$name.'" id="'.$id.'" laydate-type="datetime" autocomplete="off" placeholder="'.$placeholder.'" '.$attr.'>';
    }

    /**
     * 图片上传
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string $src			图片显示地址
     * @param string $btnText		按钮显示文本
     * @return string
     */
    public static function image($name, $value='', $src='', $btnText='请上传图片'){
    	$html = '<button type="button" name="upload" class="layui-btn layui-btn-primary layui-upload" lay-type="image" lay-data="{exts:\''.str_replace(',', '|', config('upload.upload_image_ext')).'\', accept:\'image\'}">'.$btnText.'</button>';
        $html .= '<input type="hidden" class="upload-input" name="'.$name.'" value="'.$value.'">';
        if ($src != '') {
        	$html .= '<img src="'.$src.'" style="display:inline-block;border-radius:5px;border:1px solid #ccc" width="36" height="36">';
        } else {
        	$html .= '<img src="" style="display:none;border-radius:5px;border:1px solid #ccc" width="36" height="36">';
        }
        return $html;
    }

    /**
     * 文件上传
     *
     * @author KING
     * @date 2020年6月10日
     *
     * @param string $name			控件name
     * @param string $value			控件value
     * @param string $btnText		按钮显示文本
     * @return string
     */
    public static function file($name, $value='', $btnText='请上传文件'){
    	$html = '<button type="button" name="upload" class="layui-btn layui-btn-primary layui-upload" lay-data="{exts:\''.str_replace(',', '|', config('upload.upload_file_ext')).'\', accept:\'file\'}">'.$btnText.'</button>';
    	$html .= '<input type="hidden" class="upload-input" name="'.$name.'" value="'.$value.'">';
    	return $html;
    }
}